home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Toolbox / Visual Basic Toolbox (P.I.E.)(1996).ISO / techinfo / funct-up / funct-up.doc next >
Text File  |  1996-03-29  |  64KB  |  1,685 lines

  1.  
  2.   Often Used Functions       1996     File:  \VB4\RE1V3\Funct-up.doc
  3.   for  VB 4.0  16-bit                         Funct-up.zip 
  4.  
  5.   NOTICE:  Most of this document is from sections from various user
  6.   manuals by Microsoft.  Some of it is from books and other from 
  7.   personal notes.  Consider this document copyrighted by various 
  8.   companies, including some sections by Microsoft.  You can use it but 
  9.   it cannot be sold! 
  10.  
  11.   This document is mainly for VB 4.0, but most of it also applies
  12.   to VB 3.0. 
  13.  
  14.  
  15.  
  16.   Function      Use and Example
  17.  
  18.  
  19.   A ░▒░
  20.   AddItem       box.AddItem. item[,index]
  21.         To add items to a list or combo box.
  22.  
  23.         index = where the new item is to be added in the list
  24.  
  25.         Example---   List3.AddItem "Germany"
  26.                      List3.AddItem "USA", 0   ' place it first
  27.                      List3.AddItem "France"   ' inserted at end or in
  28.                                               ' proper sort order
  29.  
  30.   RemoveItem     box.RemoveItem. item[,index]
  31.         To remove items to a list or combo box.
  32.         To remove all items from a list or combo box use
  33.             box.Clear, such as  List4.Clear .
  34.  
  35.   Sort items (in a box) by setting the Sorted property to True and
  36.   omitting the index.
  37.  
  38.   Array   see ****  ARRAYS  ****  section
  39.  
  40.  
  41.   B ░▒░
  42.   [form.][control.] BackColor [=color]
  43.   [form.][control.] ForeColor [=color]
  44.     applies to Form, cmd. button, label, list box, etc.
  45.     exa.----  lbl2.BackColor = RGB(10, 10, 240)  ' red, green, blue
  46.  
  47.  
  48.   ByVal   used to pass values by value rather than by reference.  The
  49.     ByVal means the value of the variable is Not changed.  It cannot
  50.     be used with an Object type or an array.
  51.     exa.---  Declare Function GetPfString Lib "Kernel" (ByVal SName$,
  52.                 ByVal KName$, . . .) As Integer
  53.     exa.---  Function DisplayTot ( Gp1A As String, ByVal N4 As Integer)
  54.  
  55.  
  56.   C ░▒░
  57.   CCur( expression)  this function converts number to the Currency type
  58.  
  59.   CDbl (expression)  this function converts number to the Double type
  60.  
  61.   CDate (expression)  this function converts number to the Date type
  62.     Examples---
  63.        vMyDate = "February 12, 1971"    ' define the date
  64.        wMySDate = CDate( vMyDate )  ' converts to a Date data type
  65.        mPayPerWeek = CCur( hours * hourlyPay )
  66.  
  67.   CLng  (expression) to force to a Long data-type
  68.   CSng  (expression) to force to a Single data-type
  69.  
  70.   [object.]Cls      clears the drawing area and area is repainted in
  71.                     the background color
  72.                     The object can be a form, picture box, or  the
  73.                     Printer object.
  74.            Example---   pctHouse1.Cls    ' clear the picture box
  75.                         Cls         ' clear the current form
  76.  
  77.  
  78.   CStr          Convert a number to a string.
  79.                 (Most conversions are automatic.)
  80.  
  81.   CreateDynaset Method (Pro. Edition only)  Creates a Dynaset object
  82.     from a specified Table object, QueryDef object or SQL stmt.
  83.     Dim MyDB As Database, MySet As Dynaset
  84.     Dim MyTable As Table, SQLStmt As String
  85.     Const DB_READONLY = 4   ' Set constant.
  86.     Set MyDB = OpenDatabase("BIBLIO.MDB")   ' Open database.
  87.     ' Set text for the SQL statement.
  88.     SQLStmt = "SELECT * FROM Publishers WHERE State = 'NY'"
  89.     ' Create the new Dynaset.
  90.     Set MySet = MyDB.CreateDynaset(SQLStmt, DB_READONLY)
  91.     ' *** 2nd example, using a Data control
  92.     DatHouses.DatabaseName = "Propt1.mdb"
  93.     DatHouses.RecordSource = "House1"  ' table
  94.     DatHouses.Options = 4   ' ReadOnly
  95.     DatHouses.Refresh       ' Open the database and set options
  96.  
  97.  
  98.   Clipboard  can hold only one piece of the same kind of info at one
  99.   time.
  100.     Clipboard.Clear                     ' clear it
  101.     Clipboard.SetText  StringData       ' send string data to Clipboard
  102.     Clipboard.GetText method
  103.         Example---    Destin2 = Clipboard.GetText()  ' used as function
  104.     code to select text---
  105.        KeyWord (method)     Example
  106.          SelStart           Text1.SelStart = 0  ' start with 1st char.
  107.          SelLength          Text1.SelLength = 50  ' take 1st 50 char.s
  108.          SelText            First50 = Text1.SelText ' text selected
  109.          SetText            ' send selected text to Clipboard
  110.                             Sub Copy_Click()  ' copy selected text
  111.                                Clipboard.SetText   Text1.SelText
  112.                             End Sub
  113.  
  114.                             Sub Cut_Click()  ' cut selected text
  115.                                Clipboard.SetText   Text1.SelText
  116.                                Text1.SelText = ""
  117.                             End Sub
  118.  
  119.     SendKeys Statement---   sends one or more keystrokes to the
  120.       active window as if typed at the keyboard.
  121.       syntax---     SendKeys string [,wait]
  122.       See  PP. 844-847
  123.  
  124.   [Formname].Controls( index )   is the Controls collection.
  125.     All loaded controls on a form are included in the Controls
  126.     collection.  When there are control arrays on the form, each loaded
  127.     element of each array is included in the Control collection.
  128.     exa.---  For K2 = 0 To frmAny1.Controls.Count - 1
  129.  
  130.   Count Property (Data Access)
  131.     Count returns the number of objects in a collection.
  132.     This example lists the names and total number of TableDef and
  133.     QueryDef objects in the specified database. Note the two ways to do
  134.     this.  The second technique does not use the Count property.
  135.  
  136.     Dim MyDB As Database, I As Integer, Td as TableDef
  137.     Set MyDB = OpenDatabase("MYDB.MDB")
  138.  
  139.     Debug.Print MyDB.TableDefs.Count
  140.     For I = 0 To MyDB.QueryDefs.Count - 1
  141.         Debug.Print MyDB.QueryDefs(I).Name  ' name of QueryDef
  142.     Next I
  143.     ' Or, without reference to the Count property...
  144.     For Each Td  In MyDb.TableDefs   ' Iterate through each element.
  145.             Debug.Print Td.Name      ' print table name
  146.     Next
  147.     Debug.Print MyDB.QueryDefs.Count
  148.  
  149.  
  150.  
  151.   D ░▒░
  152.   DateAdd Function     DateAdd( interval, number, date )
  153.     See  PP. 221-222 LR
  154.  
  155.   DateDiff Function     DateDiff( interval, date1, date2
  156.         [,firstdayofweek [,firstweekofyear]] )
  157.     See  PP. 223-225 LR
  158.  
  159.   DateSerial Function       DateSerial( year, month, day)
  160.     Example---   MyDate = DateSerial( 1995, 5, 12 )   ' 5/12/1995
  161.  
  162.   DatePart Function
  163.     DatePart( interval, date1, [,firstdayofweek [,firstweekofyear]] )
  164.     Example---   TestDate = Now - 4  ' subtract 4 days from current
  165.     date MsgBox = "Quarter: " & DatePart( "q", TestDate ) &  _
  166.         " and the day of the year is " & DatePart( "y", TestDate )
  167.  
  168.   DateValue Function        DateValue( date )
  169.     Example---   MyDate = DateValue( "February 11, 1974" )
  170.                  ' returns a date as a number
  171.     See  P. 229
  172.  
  173.   Day Function     Day( date )    ' returns a number between 1 and 31
  174.  
  175.   DDE    Dynamic Data Exchange---  see the DDE section
  176.  
  177.   Debug.Print [items] [;]    prints to Immediate pane
  178.     exa.---   Debug.Print "Salary = "; Salary1
  179.  
  180.  
  181.   Dim varname [([subscripts])] [As [New] type]
  182.     [,varname [([subscripts])] [As [New] type]] . . .
  183.  
  184.     subscripts  pertain to an array variable
  185.     type  is the data type of the variable, such as Integer or
  186.         String
  187.     Variables declared with Dim are local variables and their values
  188.     disappear when the Module or procedure ends.
  189.     An object varaible must be declared with New to create an instance
  190.     of that object.
  191.     If you do not specify a data or ojbect type, then it is declared as
  192.     a Variant type.  You can use the Deftype (such as DefInt A-H) in a
  193.     module to declare future variables which are not explicitly
  194.     declared (by type statements.)
  195.  
  196.     Also see Private and Public.
  197.  
  198.  
  199.   Dir[$] [Filespec [,attrmask])]
  200.         Dir returns a Variant; Dir$ returns a String
  201.         String expression that specifies a path or file name.  The path
  202.         and file name can include a drive specfication and any valid
  203.         wildcard characters.  (See pp. 142+ of (VB 3) Language
  204.         Reference for details.)
  205.  
  206.   Dir1.Path = Drive1.Drive       example of setting directory drive to
  207.     the drive of the Drive control
  208.     Drive1.Drive = Dir1.Path    example of resetting drive from dir.
  209.     File1.Path = Dir1.Path      example of setting file list box path
  210.  
  211.   Do  loops
  212.     Do While condition
  213.         statements
  214.     Loop    ' tests --before-- each execution of the loop
  215.  
  216.     Do
  217.         statements
  218.     Loop While  condition   ' tests after each execution of the loop
  219.  
  220.     Do Until  condition
  221.         statements
  222.     Loop    ' tests --before-- each execution of the loop
  223.  
  224.   [control.]Drag action    use when DragMode is set to 0 (Manual)
  225.     action = 1, initiates Drag method to allow user to drag control.
  226.     action = 2, control is dropped;  action = 0, cancels the drag
  227.  
  228.   E ░▒░
  229.  
  230.   Error Err    ' generates an error (# Err) in your code
  231.  
  232.   Exit Do               Exit Property
  233.   Exit For              Exit Sub
  234.   Exit Function
  235.  
  236.  
  237.   F ░▒░
  238.   FileCopy  source, destination
  239.     Example---   SrcFile = "My1.txt" :  DesFile = "B:\Bu1\K2.doc"
  240.         FileCopy SrcFile, DesFile
  241.     Also see Name (rename file) and Kill (delete file.)
  242.  
  243.   FileLen( filename )
  244.     This returns a Long integer that indicates the file length in
  245.     bytes.
  246.  
  247.   FileName     get filename from dir. and fileList controls
  248.     SFile$ = dirList1.Path + "\" + filList1.FileName
  249.     Open SFile$  For Input As #2
  250.  
  251.   focus    see SetFocus
  252.  
  253.   For counter = start To end (Step increment)
  254.      statements
  255.      [Exit For]
  256.   Next [counter]
  257.  
  258.   Form_Load comes before Form_Activate.  Use Form_Activate to
  259.     use code for controls on the form.
  260.  
  261.  
  262.   Format        Format[$] ( numeric-expression [,fmt$] )
  263.             Format$ function converts a numeric value into a string and
  264.             gives you control over the string's appearance.
  265.             The Format converts the numeric into a Variant type.
  266.  
  267.         Examples---  (assuming United States is the country in Windows
  268.             Control Panel)                          Result
  269.             Total1 = Format$( 8355.4, "00000.00" )    08355.40
  270.             Total1 = Format$( 8355.4, "#####.##" )    8355.4
  271.             Total1 = Format$( 8355.4, "##,##0.00" )   8,355.40
  272.             Total1 = Format$( 8355.4, "$##,##0.00" )  $8,355.40
  273.             Total1 = Format$( 8355.4, "Currency" )    8,355.40
  274.  
  275.             Time and Date---                Result
  276.             Format$( Now, "m/d/yy" )        1/27/95
  277.             Format$( Now, "dddd, mmmm dd, yyyy" )    Wednesday, January
  278.                                                     27, 1993
  279.             Format$( Now, "hh:mm: AM/PM" )          07:18 PM
  280.             Format$( Now, "d-mmmm h:mm" )           3-April 7:18
  281.             Named format---
  282.             Format$( Now, "Long Date")  ' such as Saturday, April 4,
  283.                                         ' 1996
  284.  
  285.  
  286.   Forms( index )     the syntax for refering to a form array
  287.     index must be in the range of 0 to Forms.Count -1
  288.     The Forms collection contains all the loaded forms.
  289.  
  290.   FreeFile [( )]
  291.     Returns the next valid file number.
  292.     Example---
  293.         FileNum = Freefile  ' get next available file number
  294.         Open "Testfile" For Output As FileNum
  295.  
  296.   G ░▒░
  297.   GetText   destination = Clipboard.GetText()
  298.     also see SetText
  299.  
  300.   Global varname [ ([Subscripts]) ] [As [New] type] [, varname . . .
  301.     This must be used in the Decalrations section of a code module.
  302.     exa.---  Global ar1( 1 To 8 )
  303.         Global ar2( 1 To 8, 10 To 20 )   ' 2-dim.; up to 60 dim.
  304.  
  305.  
  306.   H ░▒░
  307.   Hide Method   [form.]Hide
  308.     Example---  frmTest2.Hide   ' hide does Not unload the form
  309.  
  310.  
  311.   I ░▒░
  312.   If condition Then
  313.     [statements]
  314.   ElseIf condtion Then
  315.     [esleIfStatements]
  316.   Else
  317.     [statements]
  318.   End If
  319.  
  320.   InputBox( prompt [,title][,default] [,xpos] [,ypos] [,helpfile]
  321.         [,context] )
  322.     Example---  OutStr2$ = InputBox( "Enter line of data: ", _
  323.        "==Input to File==", "Yes" )  ' gives prompt, title and default
  324.  
  325.  
  326.   Int( number )     get the integer portion of a number
  327.  
  328.   IsNumeric     Find out if the variable is numeric.
  329.                 If  IsNumeric( x2 )  Then  . . .
  330.  
  331.   IsDate        To determine if the Variant variable contains a value
  332.                 that can be converted to a date/time value.
  333.                 IF  IsDate( Text1.Text ) Then
  334.                     SomeDate = DVDate ( Text1.Text )
  335.                     . . .
  336.   IsEmpty       To determine if a Variant variable has the Empty value.
  337.                 IF  IsEmpty( X2 ) Then X2 = 0
  338.  
  339.   J ░▒░
  340.  
  341.   K ░▒░
  342.   Kill pathname         deletes 1 or more files
  343.     Example---   Kill "B*.txt"
  344.  
  345.  
  346.   L ░▒░
  347.   LBound Functions  returns the smallest available subscript for the
  348.   indicated dimension of an array.
  349.     syntax---    LBound( arrayname [,dimension] )
  350.     Example---   sLBound1 = LBound( arNames, 1 )
  351.  
  352.   LCase (string)        returns string in lower case
  353.  
  354.   Like opterator (SQL)
  355.     exa.---  If Not (td.name Like "MSys*") Then . . .
  356.  
  357.   Line Continuation character is the space and underscore ( _).  No
  358.   comments can be placed after the Line Continuation character.
  359.  
  360.   Use the colon to separate different statement on the same line.
  361.     Example---   Text4.Text = "Hello"  : Red = 255
  362.  
  363.   Like Operator (SQL)       Expression Like "patter"
  364.     Example---
  365.         If Not( Td.Name Like "MSys*" ) Then  . . .
  366.  
  367.   [object.]Line   [ [Step] (x1,y1)] - [Step] (x2,y2) [,[color][,B[F]] ]
  368.     Example---
  369.     Sub Form_Click ()
  370.         Dim x1!, X2!, Y1!, Y2!, Color1 As Integer,  Color2 As Integer
  371.         x1 = 50 : y1 = 90 : x2 = 2500 : y2 = 1900
  372.         DrawWidth = 20
  373.         Color1 = RGB( 0, 0, 255 )    ' blue
  374.         Color2 = RGB( 80, 0, 255 )   ' blue & some red
  375.         Line (x1, Y1) - (x2, Y2), Color1   ' draw on form
  376.         x1 = 850 : y1 = 890 : x2 = 5500 : y2 = 6500
  377.         Line (x1, Y1) - (x2, Y2), Color2
  378.  
  379.     End Sub
  380.  
  381.     See also  Circle Method, DrawMode Property, and Shape Control.
  382.  
  383.  
  384.   control.ListCount  for ListBox and ComboBox
  385.     exa.---  txtBox1.Text = Lst1.ListCount  ' number of items in list
  386.  
  387.   Load  object
  388.     Loads a from or control into memory.  A copy of the form or control
  389.     must exit at design time.
  390.     Example---  This assumes that text box called txtField1 exits and
  391.     set its Index property to 0, and defined TotalCopies as an integer
  392.     greater than 0.
  393.  
  394.     Sub Form_load ()
  395.         For I = 1 To TotalCopies
  396.             Load txtField1( I )   ' load a copy, in control array
  397.             txtField1( I ).Top = txtField1( I -1 ).Top + 500  ' Move
  398.                                                             ' copy
  399.             txtField1( I ).Visible = True
  400.             txtField1( I ).Text = "Field " + Format$( I ) + "  "
  401.         Next I
  402.     End Sub
  403.  
  404.  
  405.   Loop Structures---  ░▒▓▒
  406.  
  407.     Do While  condition      ' ******
  408.         statements
  409.     Loop                     ' ******
  410.  
  411.     Another variation of the Do...Loop statement executes the
  412.     statements first and then tests the condition after each execution.
  413.     Do                            ' ******
  414.         statements
  415.     Loop While  condition         ' test at end of Loop ******
  416.  
  417.     The Do Until is equivalent to Do While Not.
  418.     Do Until condition         ' ******
  419.         statements
  420.         [Exit Do]
  421.     Loop                       ' ******
  422.  
  423.     For counter = start To end  [Step increment]   ' ******
  424.         statements
  425.         [Exit For]
  426.     Next [counter]                                 ' ******
  427.  
  428.     Example of For...Next Loop---
  429.         For  K2 = Beg1N To End1N  Step 2     ' ******
  430.             statements
  431.         Next K2                              ' ******
  432.  
  433.     A For Each...Next loop repeats a group of statements for ech
  434.     element in a collection of objects or in an array.
  435.  
  436.     For Each element In group     ' ******
  437.             statements
  438.     Next element                  ' ******
  439.  
  440.         Example---   For Each TableDef In objDb.TableDefs()
  441.                         List2.AddItem  TableDef.Name
  442.                      Next TableDef
  443.  
  444.         With variables and arrays, the type must be Variant.
  445.         ( See P. 141 in PG )
  446.  
  447.  
  448.  
  449.   M ░▒░
  450.   Merge text into your code
  451.     Use the Insert menu, choosed File.  (see P. 88 in PG)
  452.  
  453.   Mid[$] ( stringexpr, start [,length] )
  454.     Mid returns a Variant; Mid$ returns a String
  455.  
  456.   Mouse buttons
  457.     Exa.---  Sub Form_MouseDown( Button As Integer, Shift As Integer,
  458.         X As Single, Y as Single)
  459.         If Button = 1 Then Print "Left button pressed"
  460.         If Button = 2 Then Print "Right button pressed"
  461.         If Button = 3 Then Print "Middle button pressed"
  462.         If Shift And 1 Then Print "You pressed the Shift key."
  463.         If (Shift And 3) = 3 Then Print "pressed the Shift and Ctrl."
  464.     With MouseMove, the complete state of the mouse buttons is used.
  465.       Exa.---  Sub Form_MouseMove( Button As Integer, Shift As
  466.       Integer, X As Single, Y as Single)
  467.       If Button = 1 Then Print "Only the Left button was pressed."
  468.  
  469.  
  470.   MsgBox   Example---   MsgBox  Msg1, Type1, Title1
  471.     (See the Special Dialog Boxes section for details.)
  472.  
  473.  
  474.   N ░▒░
  475.   Name  oldpathname As newpathname    renames a disk file or subdir.
  476.     Example---   OldFile = "Mb2.txt"  : NewFile = "Mkg22.txt"
  477.         Name  OldFile As NewFile
  478.  
  479.  
  480.   O ░▒░
  481.   On Error  { GoTo line | Resume Next | Goto 0 )
  482.     Usually use a line label for the "line" parameter.
  483.  
  484.   Open pathname [For mode] [Access access] [lock] As [#]filename
  485.     Example--- Open vPathFile1 For Input  As #3   (seq. file)
  486.     Example of Random access file---
  487.      Open file For Random As Filenumber Len = recordLen
  488.        Type Record1
  489.           ID As Integer
  490.           FirstName As String * 18
  491.           LastName As String * 22
  492.           CoName   As String * 35
  493.        End Type
  494.        Dim MyRecord As Record1  ' set variable for later fields input
  495.        Open "Test2.rnd" For Random As #2 Len = Len( MyRecord )
  496.        [statements]
  497.        Get #2, 10, MyRecord  ' place contents of 10th record into
  498.           ' the variable MyRecord
  499.        MyRecord.FirstName  = "Ken"   ' use property to set field value
  500.        MyRecord.LastName   = "Sumerford"
  501.        Put  #2, 15, MyRecord  ' fill available fields with output data
  502.        LastRecord1 = LOF(2) \ Len(MyRecord)
  503.        LastRecord1 = LastRecord1 + 1   ' new rec.#
  504.        Close #2
  505.        Close    ' to close all open seq. and random files
  506.     A random access file can hold from 1 to about 16.7 million records.
  507.  
  508.     Example of binary file---  (like a random access file, you can both
  509.     read and write to an openned binary file)
  510.        Open FileName4 For Binary As #4
  511.  
  512.     In the 32-bit version, you cannot use the Imput$(,) for picking up
  513.     indivdual bytes from a file.  Instead, use byte array for both
  514.     16-bit and 32-bit app.s.   Example---
  515.         Dim bytX()  As Byte    ' byte array
  516.         Open "MYFIL.TXT" For Binary  Access Read Write  Lock Write As #1
  517.         ReDim bytX(1 To LOF(1)) As Byte
  518.         Get #1, 5, bytX()   ' get info in binary format from
  519.            ' file #1 and record #5
  520.            ' now you need to use the byte array
  521.  
  522.     See  PP. 650-651  LR
  523.  
  524.   Option Base {0 | 1}    to set the lower bound in an array
  525.   Option Compare {Binary | Text}    with Text, AA = aa
  526.  
  527.   Option Explicit       use this to make sure variables are declared.
  528.   This option can be used at the class, form or standard module level.
  529.  
  530.  
  531.   P ░▒░
  532.   Print method---   [object.]Print [{Spc() | Tab(n)}]
  533.       [expressionList] [ { ; | , } ]
  534.     Examples---     MainForm1.Print " This is a form called MainForm1 "
  535.          picSMsg.Print " This is a picture box. "
  536.          Print " This is the current form. "
  537.          Printer.Print "This text is going to the printer. "
  538.          picSMsg.Print " The value of X2 is "; X2; " in the equation."
  539.  
  540.          (The comma (,) skips to the next print zone (which is 14
  541.          columns wide).)
  542.          Example---
  543.            frmTest4.FontName = "MS Sans Serif"
  544.            frmTest4.FontSize = 10
  545.            frmTest4.Print "First Name ", "Last Name", "Phone # "
  546.            frmTest4.Print
  547.            frmTest4.Print "John ",  "Vanderbilt ", "567-4500 "
  548.            frmTest4.Print "Mary ",  "Hall ", "567-2376 "
  549.            frmTest4.Print "Scott ", "Strongman ", "890-5077"
  550.  
  551.          Exa.---   NL = Chr(13) + Chr(10)  ' new line char. ░▒░
  552.             Txt1 = "This should be on " & NL & "two lines. "
  553.             picShw1.Print Txt1
  554.             picShw1.Print Tab(30); "This print starts at col.# 30."
  555.  
  556.  
  557.     By default, each Print method prints the text and then moves down
  558.     to the next line.  However, by placing a semicolor or a comman at
  559.     the end of the first statement, you cause the output of the next
  560.     statement to appear on the same line.  The comma places text at the
  561.     next print zone (14 char.s by default.)
  562.  
  563.     Also see TextHeight and TextWidth methods.
  564.  
  565.   Printer Object   Printer      Printers(index) is Printers collection
  566.  
  567.     Printer properties include Font, FontBold, FontItalic, FontSize,
  568.     FontName, FontUnderline, ScaleTop, ScaleLeft, PrintQuality, Copies,
  569.     CurrentX, CurrentY, and Page
  570.     The ScaleHeight and ScaleWidth properties define the size of the
  571.     printable area of the page.
  572.     Exa.---  Printer.FontSize = 12 :  Printer.CurrentX = 400
  573.        Printer.Print "Time Card"
  574.        Printer.Line (50,80) -Step(300,400)
  575.        Printer.EndDoc   ' sent all print to printer and formfeed
  576.  
  577.     Printer methods include  Circle, Line, Print, NewPage, EndDoc,
  578.     KillDoc, PaintPicture, and Scale.
  579.  
  580.   PrintForm Method    prints the contents of the current form to
  581.     the printer.   syntax---  [from.]PrintForm
  582.     Exa.---  frmMK1.PrintForm  ' send form to printer
  583.  
  584.  
  585.  
  586.   Private varname [([subscripts])] [As [New] type]
  587.           [,varname [([subscripts])] [As [New] type]] . . .
  588.         Used at module level to declare private variables and allocate
  589.         storage space.  Private is also used to declare the object type
  590.         of a variable.  (Example---  Private Ws1  As New Worksheet )
  591.  
  592.   Public varname  [([subscripts])] [As [New] type]
  593.           [,varname [([subscripts])] [As [New] type]] . . .
  594.         Variables declared using the Public statement (at the module
  595.         level) are available to all procedures in all modules in all
  596.         applications.  However, Public cannot be used in a class
  597.         module to declare a fixed-length string variable.  A Public
  598.         statement cannot be used in a procedure.
  599.  
  600.         See also Private and Static.
  601.  
  602.   Properties---
  603.      Properties that you can set and get ar run time are called
  604.      read-write properties.  Properties that you can only read at run
  605.      time are called read-only properties.  See PP. 187-188  PG
  606.  
  607.  
  608.   Q ░▒░
  609.   Quotes
  610.     VB 4  interprets two quotation marks in a row as an embedded
  611.     quotation mark.
  612.        Example---  Nt1 = "The man said, ""Get out now."" and ran."
  613.     Using quotes in Objects is tricky.  For example, this will work:
  614.        NewDB1 = "C:\VB4\RE1V3\PCV3.MDB"
  615.        set dbPCV = ws1.CreateDatabase(NewDB1,dbLangGeneral)
  616.  
  617.  
  618.   R ░▒░
  619.   Randomize         Seed random number generator.
  620.  
  621.   RGB (red, green, blue)     each color must be from 0 to 255
  622.     Color   RGB value   Red     Green   Blue
  623.     blue    &HFF0000    0       0       255
  624.     green   &HFF00      0       255     0
  625.     cyan    &HFFFF00    0       255     255
  626.     red     &HFF        255     0       0
  627.     yellow  &HFFFF      255     255     0
  628.     white   &HFFFFFF    255     255     255
  629.  
  630.  
  631.   Rnd[(number)]     The argument number can be any valid numeric
  632.                     expression.  The Rnd function returns a Single
  633.                     value > 0 and < 1.
  634.     Examples---  X2 = Int( Rnd * 100 +1 )  ' generates a number
  635.                         ' between 1 and 100
  636.             upper1 = 100   ' upper bounds for the returned number
  637.             lowerBounds1 = 50
  638.             X4 = Int( (upper1 - lowerBounds1 +1) * Rnd + lowerBounds1 )
  639.             X5 = Rnd 1   ' take the next random number in the sequence
  640.  
  641.  
  642.  
  643.   Recordset  ░▒▓▒   examples & notes    ░▒▓▒
  644.  
  645.     WARNING:  You must set the path and filename for the .ini
  646.     file for setting such things as CollatingSequence for the
  647.     DBEngine.  Example---
  648.  
  649.       DBEngine.IniPath = "C:\WINDOWS\VB.INI"
  650.       Set ws1 = DBEngine.Workspaces(0) ' this is the default ws
  651.       Set db1 = ws1.OpenDatabase("c:\smdb\p45", False, False, _
  652.           "Paradox 4.x;")
  653.       MsgBox "CollatingOrder " & db1.CollatingOrder
  654.       Set rs1 = db1.OpenRecordset("Prospect")
  655.       CANNOT--  rs1.Index = "Prosp num"  ' PK, establish sort order
  656.  
  657.       If you have a data control to set database and recordset,
  658.       then you can just include the .IniPath statement.
  659.         Example---  DBEngine.IniPath = "C:\WINDOWS\VB.INI"
  660.  
  661.     Open a database---
  662.       datSSM.DatabaseName = "\VB3\SSM1.MDB" ' db openned, rs rebuilt
  663.       datSSM.RecordSource = "Customer1"     ' rs (recordset) rebuilt
  664.       datSSM.Refresh   ' rs (recordset) rebuilt
  665.           ' this will fail if the db name is invalid
  666.       If datSSM.Database Is Nothing Then
  667.          MsgBox "Open Failed (Database is invalid) ", , "Failed"
  668.       End If
  669.       If datSSM.Recordset Is Nothing Then
  670.          MsgBox "Open Failed (Recordset is invalid) ", , "Failed"
  671.       End If
  672.  
  673.  
  674.     Add a New record with AddNew method
  675.     If (datProsp(1).Recordset.Updatable = True)  And _
  676.       (datProsp(1).ReadOnly) = False  Then
  677.         datProsp(1).Recordset.AddNew   ' add new record
  678.         datProsp(1).Recordset.("Title") = "President"  ' field value
  679.         datProsp(1).Recordset.("Sale Price) =  45.95
  680.         txtCoName.Text = "XY Company"  ' chg data-bound control
  681.         datProsp(1).Recordset.Update   ' update database (with change)
  682.     Else  ' database file cannot be updated
  683.         MsgBox "The database file cannot be updated"
  684.         Exit Sub
  685.     End If
  686.     ' * * * VB makes no attempt to validate primary or foreign
  687.     ' keys.  Use the data control's Validate event.
  688.  
  689.     Show all fields in a recordset---
  690.       For K1 = 0 to datVdr.Recordset.Fields.Count - 1
  691.         lstFlds.AddItem  datVdr.Recordset(K1)  ' add field to list
  692.       Next K1
  693.  
  694.     Error Handling---  The Error event is passed a DataError argument
  695.       (a number.) A text string explaining the error can be found by
  696.       using the Error$( DataErr) function.
  697.  
  698.     Strings exceeding 64 K bytes (limitation of VB string variables)
  699.       can be handled in a Memo field by using FieldSize, GetChunk,
  700.       and AppendChunk.
  701.  
  702.     Update a record and Close it
  703.     '  use  datPros1.Edit if Not in Edit for rs
  704.     datPros1.Recordset.Update
  705.     datPros1.Recordset.Close
  706.  
  707.     another example---
  708.      datProspect1.Recordset.Edit  ' Enable editing
  709.      datProspect1.Recordset.Update  ' save edits
  710.  
  711.     * * * You can add, change and save-to-file a picture by
  712.     using a data-bound Picture box or image control.  Also see
  713.     the LoadPicture and SavePicture statements.
  714.  
  715.     Delete a record   (Also see code later in this section.)
  716.     datPros1.Recordset.Delete
  717.     If datPros1.Recordset.EOF = False Then
  718.         datPros1.Recordset.MoveNext
  719.     Else  ' now at the last record
  720.         datPros1.Recordset.MoveFirst
  721.     End If
  722.  
  723.     Check for a valid record pointer---
  724.       If (datPros1.Recordset.BOF = False)  AND  _
  725.          (datPros1.Recordset.EOF = False) Then   ' current record
  726.          ' pointer is valid unless you have not moved after deleting
  727.          ' the last record in the recordset
  728.  
  729.       Else  ' invalid position for current record pointer
  730.         .  .  .
  731.       End If
  732.  
  733.     Move Method (data access) ----    recordset.Move rows [,start]
  734.         rows is a Long integer, positive for move forward
  735.         start is a String value identifying a bookmark
  736.  
  737.         datPros1.Recordset.Move 10   ' move 10 rows forward
  738.         Move to first or last record in the recordset
  739.           datPros1.Recordset.MoveFirst
  740.           datPros1.Recordset.MoveLast
  741.         Move to next or previous--- use   MoveNext or MovePrevious
  742.           datPros1.Recordset.MoveNext
  743.  
  744.     Get value of a field  * * *
  745.         aLName = datPros1.Recordset.Fields( "P lname").Value
  746.  
  747.     If you use a Move method that moves beyond BOF or EOF, VB generates
  748.     a trappable error.  The following code protects against this:
  749.  
  750.       Do While datPros1.Recordset.EOF = False  ' Assuming EOFAction =1
  751.          datPros1.Recordset.MoveNext
  752.          ' insert code to work with current record
  753.       Loop
  754.       datPros1.Recordset.MoveLast  ' reposition to a valid record
  755.  
  756.       Note---   The MoveNext method and a Loop can be used like a Scan.
  757.  
  758.     BookMark
  759.       Use BookMark to mark a record and later find it.  (You cannot use
  760.       the Refresh method during after setting the Bookmark, or you will
  761.       loose the position.)
  762.         Dim MyBMark As Variant
  763.         MyBMark = datPros1.Recordset.BookMark  ' save current rec.
  764.                                             ' pointer
  765.         datPros1.Recordset.MoveFirst  ' move off record
  766.         datPros1.Recordset.BookMark = MyBMark ' move to bk.mark
  767.  
  768.     Finding records----
  769.       To locate records you use the Find methods with dynaset- and
  770.       snapshot-type Recordset objects, and the Seek method with
  771.       table-type  Recordset objects.
  772.  
  773.       VB 4 supports these Find methods:
  774.         FindFirst method finds the first record meeting the criteria
  775.         FindLast method
  776.         FindNext method finds the next record meeting the criteria
  777.         FindPrevious method
  778.  
  779.         aGender1 = "Mr."
  780.         datPros1.Recordset.FindFirst "Mx = " & aGender1  'find value
  781.                                     ' in the [Mx]  field
  782.  
  783.         Check the value of the NoMatch property to see if a match was
  784.         successful.
  785.            vHere = rs2.BookMark   ' set to current rec. in Recordset
  786.            aMyCriteria = "State = 'NY'"  ' set criteria, field is State
  787.            rs2.FindFirst aMyCriteria
  788.            If rs2.NoMatch Then
  789.               rs2.BookMark = vHere  ' match not made, go to bk.mark
  790.            Else
  791.               ' match found
  792.               .  .  .
  793.            End If
  794.  
  795.     Determine whether data in Recordset can be changed---
  796.            If (datPros1.ReadOnly = False) And
  797.              (datPros1.Recordset.Updatable = True) Then
  798.              .  .  .  ' OK to change data in rs
  799.  
  800.         Determine if data in the field can be changed---
  801.            If datPros1.Recordset.Fields("FirstName").Attributes _
  802.               And dbUpdatableField = 0  Then
  803.               MsgBox "Current field cannot be changed."
  804.            End If
  805.  
  806.     Adding a New record---
  807.         dat4.DatabaseName = "BIBLIO.MDB"  ' Access-type d.b.
  808.         dat4.RecordSource = "Titles"   ' set table
  809.         dat4.Refresh
  810.  
  811.         dat4.Recordset.AddNew   ' create a new record
  812.         ' set field values
  813.         dat4.Recordset("Title") = "The Data Control"
  814.         dat4.Recordset("PubID") = 43
  815.         dat4.Recordset.Update   ' Append new record
  816.         .  .  .
  817.         dat4.Recordset.Close
  818.  
  819.         The best way to validate fields is by using the data control's
  820.         Validation event.  Also see info about the Relation object.
  821.  
  822.     Editing the Current record
  823.  
  824.         ' open database and recordset first
  825.         dat4.Refresh
  826.         dat4.Recordset("PubID") = "5007"    ' change the value
  827.         txt3.Text = "New book title"        ' change value in
  828.                                         ' bound control
  829.         dat4.Recordset.Update
  830.         dat4.Recordset.Close    ' close rs
  831.  
  832.     Editing the Value of a Field
  833.         The set of all Field objects for a Recordset is called the
  834.         Fields collection.  Here are some examples---
  835.            dat4.Recordset.Fields("PubID").Value
  836.            dat4.Recordset.Fields("FName")  ' refers to Value of [FName]
  837.            aName1 = "FName"
  838.            dat4.Recordset.Fields(aName1)  ' refers to Value of [FName]
  839.            dat4.Recordset("FName")  ' refers to Value of [FName]
  840.  
  841.         The following shows all fields in the Recordset:
  842.            Dim Fld1 As Field
  843.            For Each Fld1 In dat2.Recordset.Fields
  844.               Lst2.AddItem Fld1  ' add the field to List box
  845.            Next Fld1
  846.  
  847.     Deleting Records---
  848.         ' example of deleting all records less than 1989
  849.         dat3.DatabaseName = "Books1.MDB"  ' set db name in data control
  850.         dat3.RecordSource = "Select * From Titles Where _
  851.            [Year Pub] < 1989;"
  852.         dat3.Refresh
  853.         Do While dat3.Recordset.EOF = False
  854.            dat3.Recordset.Delete  ' delete current record
  855.            dat3.Recordset.MoveNext
  856.         Loop
  857.  
  858.     Memo Fields---
  859.         Memo fields can handle string that exceed the 64K size
  860.         limitation of VB string variables.  See the GetChunk method for
  861.         further info.
  862.  
  863.     Close Database and Recordset---
  864.         Databases and their recordsets are automatically closed when
  865.         (1) you use the Close method with the only or last recordset;
  866.         (2) the form containing the data control is unloaded; or (3)
  867.         the End statement is used.  Ways 1) and 2) trigger the Validate
  868.         event.
  869.  
  870.     Transactions---
  871.         A transaction is a recoverable series of changes you make to a
  872.         recordset.  The database must also support transactions.
  873.         (See PP. 584-586  PG)
  874.  
  875.         Example---
  876.         Dim MyTable As Recordset, MyWorkspace As Workspace
  877.         Set MyWorkspace = Workspaces(0)       ' Set Workspace variable.
  878.         ' Assume data control's Recordset is from Titles table.
  879.         Set MyTable = Data1.Recordset         ' Set Recordset variable.
  880.  
  881.         MyWorkspace.BeginTrans                ' Start of transaction.
  882.         Do Until MyTable.EOF   ' *******
  883.             If MyTable![PubID] = 5 Then
  884.                 MyTable.Edit              ' *** Enable editing.
  885.                 MyTable![PubID] =   6     ' Change title.
  886.                 MyTable.Update            ' Save changes.
  887.             End If
  888.             MyTable.MoveNext
  889.         Loop                   ' *******
  890.  
  891.         If MsgBox("Save all changes?", vbQuestion + vbYesNo, _
  892.             "Save Changes") =  vbYes Then
  893.           MyWorkspace.CommitTrans ' Commit changes.
  894.         Else
  895.           MyWorkspace.Rollback     ' Undo changes.
  896.         End If
  897.  
  898.  
  899.  
  900.   ░▒▓▒  end of Recordset section =======================
  901.  
  902.  
  903.  
  904.   RemoveItem     box.RemoveItem. item[,index]
  905.         To remove items to a list or combo box.
  906.         To remove all items from a list or combo box use
  907.             box.Clear, such as  List4.Clear .
  908.  
  909.  
  910.   S ░▒░
  911.   Select Case  testExpression
  912.     [Case expressionlist1
  913.         Statementblock-1]]
  914.     [Case expressionlist2
  915.         Statementblock-2]]
  916.     [Case Else
  917.         Statementblock-n]]
  918.     End Select
  919.  
  920.     You can have a list or ranges in the Case statement.
  921.         Example---  Case "everything", "nuts" To "soup", TestItem4$
  922.  
  923.   [Form.]Show [style]
  924.     Form is the form or MDI form to display.
  925.     style = 0  is modeless
  926.     style = 1  is model (no VB code after the Show method is executed
  927.                until the form is hidden or unloaded)
  928.     Also see   Hide method.
  929.  
  930.  
  931.   SetFocus Method     object.SetFocus
  932.     Example---  txtEditName.SetFocus   ' set focus to TextBox
  933.     See  P. 854  LR
  934.  
  935.   Clipboard.SetText data [,format]      SetText copies text on to the
  936.     Clipboard, replacing any previous text in the Clipboard.
  937.  
  938.     GetText   destination = Clipboard.GetText()
  939.  
  940.   Sequential files---  good for editing text files
  941.     Open file For [Input | Output | Append] As filenumber Len =
  942.         buffersize
  943.     Exa.---  FileNum1 = FreeFile  ' get next available file #
  944.       file3 = "\VB3\exam4.txt"  ' file name, including path
  945.       FileSz1 = FileLen(file3)
  946.       Open file3 For  Append As FileNum1 Len = FileSz1
  947.       Print #FileNum1, txtBx1.Text  ' write contents to file
  948.       ' write to a file, output has quotation marks around string
  949.       '  and commas between fields
  950.       Write #2  St3$, AnyW4, AnyNum1%
  951.     (Also see Random and Binary access files.  See Open stmt.)
  952.  
  953.  
  954.   Static varname [([subscripts])] [As [New] type]
  955.        [,varname [([subscripts])] [As [New] type]] . . .
  956.     Variables declared with the Static statement retain their values
  957.     during the session.  When declared in a procedure, they are local
  958.     to that procedure.  To make all variables in a procedure static,
  959.     use the Static Keyword at the beginning of the procedure.
  960.     (Example---   Static Function RunTotal( num1 )
  961.  
  962.   Str[$] (number)
  963.     The Str function returns the string representation of a number.
  964.     Examples---  M1String = Str( 459.1 )   ' returns " 459.1"
  965.                  M1String = Str(-459.1 )   ' returns "-459.1"
  966.     Str  returns a Variant;  Str$  returns a String var.
  967.  
  968.   StrConv function      returns a converted string
  969.     StrConv( string, conversion )
  970.         string  is the string expression
  971.         conversion  is the sum of the values for type of conversion
  972.         Some conversion  settings are---
  973.             vbUpperCase     convert string to uppercase
  974.             vbLowerCase     convert string to lowercase
  975.             vbProperCase    convert string to upper case for
  976.                             first letter in each word
  977.  
  978.  
  979.  
  980.   PROCEDURES----
  981.  
  982.   Sub Procedure       syntax---
  983.     [ Private|Public ] [Static] Sub procedureName (arguments)
  984.         statements
  985.         [Exit Sub]
  986.         . . .
  987.     End Sub
  988.  
  989.     Sub procedures can be placed in standard modules, class modules,
  990.     and form modules.  They are Public in all modules by default.
  991.     A general procedure tells the application how to perform a certain
  992.     task.  An event procedure is invoked when an event occurs.
  993.  
  994.     Example of calling a Sub procedure---
  995.         prFindCo  LName, CoName1A   ' 2 arguments follow the proc name
  996.  
  997.     Sub Procedures are Public by default and local variables are not
  998.     preserved between calls.
  999.  
  1000.     Sub Procedures that have variables that are Not declared are local,
  1001.     unless the variables are declared at a higher level.  Is is usually
  1002.     best to declare, such as with a Dim statement, local variables
  1003.     within a procedure.
  1004.  
  1005.  
  1006.   Function Procedure
  1007.     syntax--- [ Private|Public ] [Static] Function procedureName
  1008.            (arguments) [As type]
  1009.        statements
  1010.        [Exit Function]
  1011.        . . .
  1012.     End Function
  1013.  
  1014.     Example---
  1015.     Function Hypotenuse (A, B)
  1016.         Hypotenuse = Sqr( A ^2 + B ^2 )  ' value is assigned to proc
  1017.                                          ' name
  1018.     End Function
  1019.  
  1020.     Hp2 = Hypotenuse (Width1, Height1)
  1021.     Label3.Caption = Hp2
  1022.  
  1023.     Examples---   (other ways to call a Function proc, such as ToDec)
  1024.     Print 10 * ToDec
  1025.     If ToDec > 20 Then Debug.Print " Out of Range"
  1026.     ToDec DueAmt1D
  1027.  
  1028.   Property Procedures   are used to create and manipulate custom
  1029.     properties.  (See pp. 120-126 PG)
  1030.     Once a name is used for a Property procedure, that name cannot be
  1031.     used to name a Sub or function procedure, or a variable.
  1032.  
  1033.    Read-Only properties are useful when (1) you want the property to be
  1034.    read-only for users or (2) you want related code to be executed when
  1035.    the property is set.
  1036.  
  1037.   Procedures in Forms
  1038.     All calls from outside the form module must point to the form
  1039.     module containing the procedure.
  1040.     Example---  Form2.SomeSub  Argu4, Argu5  ' call sub Procedure
  1041.                                              ' from form Form2
  1042.   Procedures in Standard Modules
  1043.     A call to a common procedure from the same module runs the
  1044.     procedure in that module.  If you call a procedure from another
  1045.     module, it is best to include the procedure's name (because the
  1046.     proc name may not be unique.)
  1047.     Example---  Module2.CName( Argu5, Argu7 )
  1048.  
  1049.   Passing Arguments to Procedures
  1050.     The arguments for procedures have the Variant data type by default.
  1051.     You can declare data types.
  1052.     Example---  Function DisplayTot ( Gp1A As String, ByVal N4 As
  1053.                     Integer)
  1054.                   Dim Header1 As String, I2 As Integer
  1055.                   .   .   .
  1056.                 End Function
  1057.     If the ByVal keyword is used, the original variable is Not changed
  1058.     by code in the procedure.  The ByRef is the default.  The Optional
  1059.     keyword indicates that the arguments are not required, but the Type
  1060.     must be Variant.    ( Example---   Private Sub prShowCo ( Optional
  1061.     prShw As Variant,  Optional ByVal Co1 As Variant,   Optional  City1
  1062.     As Variant )  If Optional is used, then all subsequent arguments in
  1063.     arglist  must also be declared as Optional.
  1064.  
  1065.     Using the ParamArray keyword allows you to specify that a procedure
  1066.     will accept an arbitrary number of arguments.  (See P. 133  PG)
  1067.  
  1068.     Named Arguments---  For many VB built-in functions, statements, and
  1069.     methods, VB provides the option ofusing named arguments for
  1070.     argument values.    Example---
  1071.         Set CurDB = OpenDatabase( exclusive:= False,  _
  1072.             source:= "Fox 2.5", dbname:= "C:\FoxData" )
  1073.  
  1074.  
  1075.     ░ ░ ▒ SQL  (some statements and syntax)
  1076.  
  1077.     CREATE TABLE
  1078.     CREATE INDEX
  1079.     ALTER TABLE     Alter the structure of an existing table
  1080.     exa.---
  1081.       SQL1$ = "ALTER TABLE  [DB Books] ADD COLUMN [ISBN] Text(20)"
  1082.       MyDB1.Execute SQL$
  1083.     SELECT    creates a recordset from 1 or more tables
  1084.     INSERT    transfers a batch of data into the database
  1085.             exa.---  INSERT INTO [Genled].* SELECT [Trans1].*
  1086.                     FROM [Trans1]
  1087.     UPDATE    changes the data values of a particular set of records
  1088.             exa.---  UPDATE [Products1] SET [Price] = [Price] * 1.08,
  1089.             [S Price] = [S Price] * 1.04 WHERE [Rec Date] > #02/15/95#
  1090.     DELETE    deletes records from the database
  1091.  
  1092.       ------------------
  1093.     SELECT    selects fields and records
  1094.                 exa.--- SELECT Prosp1.FirstName, St1.State FROM
  1095.                     [Prosp1], [St1] WHERE Prosp1.State1 St1.State
  1096.                 exa.--- SELECT *  FROM [Customer1]
  1097.                 exa.---  SELECT TOP 10 PERCENT * FROM [MyTable]
  1098.  
  1099.     FROM
  1100.     WHERE   ... WHERE [My Field]  = 'NY'   ' exact match
  1101.             ... WHERE [My Field]  = #??/04/96#  ' for 04/96
  1102.             ... WHERE [My Field]  LIKE 'S???R'  ' matches pattern
  1103.             ... WHERE [My Field]  = 4 AND [State] = 'TX'
  1104.             ... WHERE [My Field]  BETWEEN 50 And 100  ' a range
  1105.  
  1106.     GROUP BY   combines records with identical values in the specified
  1107.                 field list into a single record
  1108.     HAVING     the having is relevant only to the Group By clause
  1109.             exa.--- SELECT * FROM Accounts GROUP BY Type1 HAVING
  1110.                 [Trans date] >= #05/01/96#
  1111.     ORDER BY   determines the sort order
  1112.             exa.--- SELECT * FROM [MyTable] WHERE [Last Name]
  1113.                 LIKE 'S*' ORDER BY [Last Name], [First Name]
  1114.             exa.---  SELECT TOP 10 PERCENT * FROM [MyTable]
  1115.  
  1116.     AVG   AVG( expression ) AS
  1117.             exa.---  SQL2 = "SELECT AVG( [Amt1] ) AS [SUM1] FROM Accts
  1118.                 WHERE [Due Date] > #06/01/96#
  1119.     COUNT   CONT( expression) AS tempName
  1120.             exa.---  SQL3 = "SELECT COUNT(*) AS [Count1] FROM
  1121.                Prospect1 WHERE [Zip] LIKE '762*'
  1122.     SUM     SUM( expression ) AS resultField
  1123.             exa.---  SQL3 = "SELECT SUM( [Amt1] ) AS [Sum3]
  1124.                FROM Accts  WHERE [Amt1] > 49 "
  1125.  
  1126.  
  1127.   T ░▒░
  1128.  
  1129.   Type Statement  used at module level to define a user-defined data
  1130.   type containing one or more elements.  They must be initially defined
  1131.   only at the (code) module level.  Also called Structures.
  1132.     syntax---  [Private|Public] Type varname
  1133.             elementName [ ([subscripts]) ] As Type
  1134.             [ elementName [ ([subscripts]) ] As Type ]
  1135.             . . .
  1136.        End Type
  1137.  
  1138.        Example---  (Type can also be used as a record type.)
  1139.          ' Declarations in a standard (code) module
  1140.          Private Type SystemInfo    ' create the type
  1141.             CPU As Variant
  1142.             Memory1 As Long
  1143.             Cost1 as Currency
  1144.             PurDate As Variant
  1145.          End Type
  1146.  
  1147.          Dim MySystem As SystemInfo   ' dimension MySystem
  1148.  
  1149.          MySystem.CPU = "486"    'assign value to variable
  1150.  
  1151.        User-defined types can also contain objects.  Example---
  1152.            Private Type AccountPack
  1153.               frmInput As Form
  1154.               dbPayRollAcct As Database
  1155.            End Type
  1156.  
  1157.        See PP. 177-180  PG
  1158.  
  1159.  
  1160.   U ░▒░
  1161.   Unload object
  1162.     The argument object is the form or control array element to unload.
  1163.     Unload cannot be used to remove a control created at design time.
  1164.     exa.---  Unload Me   ' unload this instance of a form
  1165.         Unload optBook(4)   ' unload control that was created at r.t.
  1166.  
  1167.  
  1168.   Updating the Data---
  1169.     There are 4 ways to update data:
  1170.        Update method    Updates (saves) the changes to the recordset.
  1171.  
  1172.        UpdateRecord     Updates database recordset with data from
  1173.                            bound controls.  No events (including
  1174.                            Validate) are triggered when this method is
  1175.                            called.
  1176.  
  1177.        UpdateControls   Updates database recordset changes to
  1178.                             bound controls.
  1179.        Refresh          Creates a new recordset based on
  1180.                             data control properties.
  1181.  
  1182.  
  1183.   V ░▒░
  1184.  
  1185.   Val function    returns the numbers in a string
  1186.     Val( string )
  1187.  
  1188.   Validate event---
  1189.     The data control's Validate event allows you to check any changes
  1190.     made to the recordset --before-- newinfo is written to the
  1191.     database.  The AddNew, Update and Move methods trigger Validate,
  1192.     but not UpdateRecord.  (See PP. 586-588  PG)
  1193.     Example---
  1194.  
  1195.     Private Sub datExample1_Validate(Action As Integer,
  1196.          Save As _ Integer) ' Validate entry Before it affects db
  1197.        If Action = vbDataActionDelete Then  ' Delete record
  1198.           If datExample1.Recordset.RecordCount < 3 Then
  1199.              MsgBox "Must have at least 2 records in table. "
  1200.              Save = 0    ' Update will Not be done
  1201.           Else
  1202.              Save = 1  ' set Save to True
  1203.           End If
  1204.        End If
  1205.     End Sub
  1206.  
  1207.     Action argument values (a few)
  1208.        Value    Description
  1209.        0        Cancel the action that caused the event
  1210.                   (This mostly affects the cursor and not whether the
  1211.                   data is saved to the database.)
  1212.        1        MoveFirst method
  1213.        2        MovePrevious method
  1214.        3        MoveNext method
  1215.        4        MoveLast method
  1216.        5        AddNew
  1217.        6        Update (not UpdateRecord)
  1218.        7        Delete method
  1219.  
  1220.  
  1221.   VarType( varname )        Returns a value indicating the subtype
  1222.                             of a variable.
  1223.   Return Values----
  1224.     Constant  Value   Variable type description
  1225.  
  1226.     vbEmpty   0     Empty (uninitialized).
  1227.     vbNull    1     Null (no valid data).
  1228.     vbInteger 2     Integer.
  1229.     vbLong    3     Long integer.
  1230.     vbSingle  4     Single-precision floating-point number.
  1231.     vbDouble  5     Double-precision floating-point number.
  1232.     vbCurrency 6   Currency.
  1233.     vbDate    7     Date.
  1234.     vbString  8     String.
  1235.     vbObject  9     OLE Automation object.
  1236.     vbError   10    Error.
  1237.     vbBoolean 11    Boolean.
  1238.     vbVariant 12    Variant (used only with arrays of Variants).
  1239.     vbDataObject    13  Non-OLE Automation object.
  1240.     vbByte    17    Byte
  1241.     vbArray   8192      Array.
  1242.  
  1243.   Note   These constants are specified by Visual Basic for
  1244.   applications. As a result, the names can be used anywhere in your
  1245.   code in place of the actual values.
  1246.  
  1247.   Remarks
  1248.   The VarType function never returns the value for vbArray by itself.
  1249.   It is always added to some other value to indicate an array of a
  1250.   particular type. The constant vbVariant is only returned in
  1251.   conjunction with vbArray to indicate that the argument to the VarType
  1252.   function is an array of type Variant.
  1253.  
  1254.  
  1255.  
  1256.   W ░▒░
  1257.   With   can be used in a user Type (Record) or with Objects and
  1258.     properties.
  1259.     Examples---
  1260.         With typeProsRecord
  1261.             .FirstName = "Sam"
  1262.             .LastName = "Taylor"
  1263.         End With
  1264.  
  1265.         With txtBox2
  1266.             .Height = 2000
  1267.             .Wideth = 1800
  1268.         End With
  1269.  
  1270.  
  1271.   X ░▒░
  1272.  
  1273.   Y ░▒░
  1274.  
  1275.   Z ░▒░
  1276.  
  1277.  
  1278.  
  1279.   NAMING VARIABLES & CONTROLS  ***********************************
  1280.  
  1281.   Data Types---
  1282.     DefStr  A-H   ' String
  1283.     DefInt  I-L   ' Integer
  1284.     DefCur  M     ' Currency
  1285.     DefSng  N     ' Single
  1286.     DefBool T     ' Boolean  for True or False (0 = False)
  1287.     DefVar  U-V   ' Variant
  1288.     DefDate W     ' Date
  1289.     DefSng  X-Z   ' Single
  1290.  
  1291.   Constants---   See PP. 155-157  PG
  1292.     In VB 4.0, constant names are in mixed-case format, with a prefix
  1293.     indicatingg the object library that defines the constant.
  1294.  
  1295.         vb  indicates a constant from the VB and VB for applications
  1296.             object libraries, such as vbTileHorizontal
  1297.         db  indicates a constant from the data access object library
  1298.         con   indicates a constant that you have created or imported
  1299.             from another file
  1300.  
  1301.     You cannot modify a constant or assign a new value as with a
  1302.     variable.
  1303.     syntax---   [Public|Private] Const  constantName [As type] =
  1304.                     expression
  1305.     Examples---
  1306.         Const conPi = 3.14159
  1307.         Public Const conPi = 3.14159,  conWorldPop = 6E+09
  1308.         Const conRelDate = #2/15/96#
  1309.  
  1310.  
  1311.   Procedures---
  1312.     regular (sub) procs begin with  pr
  1313.     my created functions begin with  fn
  1314.  
  1315.   Classes, your created classes mostly
  1316.     Use  cls  as the front of the Class Module name, such as
  1317.     clsRSystem
  1318.  
  1319.  
  1320.    ***********************************
  1321.  
  1322.  
  1323.  
  1324.   Data Types in VB 4.0               ********
  1325.  
  1326.                             Type-
  1327.                             declaration
  1328.   Type      Description     character   Range
  1329.  
  1330.   Integer   2-byte integer    %     -32,768 to 32,767
  1331.  
  1332.   Long      4-byte integer    &     ~ -2,147,000,000 to
  1333.                                     ~  2,147,000,000 to
  1334.  
  1335.   Single    4-byte floating-  !     ~ -3.4028E38 to -1.401E-45
  1336.             point number            ~  1.401E-45 to  3.4028E38
  1337.  
  1338.  
  1339.   Double    8-byte floating-  #     ~ -1.79769 D308 to -4.940656D-324
  1340.              point number           ~  4.9406 D-324 to  1.79769 D308
  1341.  
  1342.   Currency  8-byte number     @     ~ -922,337,000,000,000.5808 to
  1343.             with fixed decimal      ~ -922,337,000,000,000.5807
  1344.             point                   (supports up to 4 digits to the
  1345.                                      right of the decimal point and
  1346.                                      15 digits to the left)
  1347.  
  1348.   String    String of         $     0 to approx. 65,500 characters
  1349.             characters            String is variable-length by
  1350.                                   default, but you can make them
  1351.                                   fixed by using  String * size.  For
  1352.                                   example---  Dim Empname As String * 40
  1353.  
  1354.   Variant   Date/time,        (none)
  1355.             floating point
  1356.             number, or string
  1357.  
  1358.   Byte      1 byte                  0 to 255
  1359.                                     If the variable contains binary
  1360.                                     data, declare it as an array of the
  1361.                                     Byte data type.
  1362.  
  1363.   Boolean   2 bytes                 True or False
  1364.  
  1365.   Examples---
  1366.  
  1367.         Dim I2 As Integer, Amt3 As Double
  1368.         Static FirstName As String
  1369.         Global AmtPaid As Currency
  1370.         Dim DateCur,  DateFirst         (Variant type)
  1371.         Dim K2!, K3!, Amt4@
  1372.  
  1373.         Dim EmpName As String * 50   ' string with 50 char. in length
  1374.  
  1375.         Function CalcTotPay (Amt1 As Currency, Hrs2 As Integer)
  1376.            . . .
  1377.  
  1378.         Sub  PaySum ( (V3), Hours5 As Integer )  ' parenthese turns
  1379.                     ' V3 into an expression, so no mismatch problems
  1380.  
  1381.         Function AmtPaid2 (S1 As String, ByVal n1 As Integer) As String
  1382.                     ' the return value for this function is a String
  1383.  
  1384.  
  1385.    ********  ARRAYS  ***************************
  1386.  
  1387.   Local fixed arrays must be Static.
  1388.  
  1389.   Dimensioning of Arrays---
  1390.     Examples---     Dim Sums( 20 ) As Double
  1391.                     Static Cnt1( 3 ) As Integer  ' 4 elements
  1392.  
  1393.            explicity set lower and upper bounds
  1394.                     Dim Sums( 100 to 120 ) As Currency   ' set bounds
  1395.  
  1396.            Dimension multidimensional array
  1397.                     Dim MultiD( 1 To 10, 1 To 25 )   ' 2 dimensions
  1398.  
  1399.            Dimension a dynamic array
  1400.                     Dim DynTotals()    ' empty dimension list
  1401.  
  1402.                     ReDim DynTotals( X2 + 1 )    ' allocate elements,
  1403.                         ' this must be done within a procedure
  1404.  
  1405.                     ReDim DynTotals( X2, 9, 4 )    ' allocate elements,
  1406.                         ' This must be done within a procedure.
  1407.                         ' This is a multidimensional array.  A dynamic
  1408.                         ' array created in a proc is limited to 8
  1409.                         ' dimensions.
  1410.  
  1411.                     ReDim Preserve DynEmpNames( UBound(DynEmpNames) + 5)
  1412.                         ' preserve the values from the current array
  1413.                         ' and add 5 elements (you can only add to
  1414.                         ' the upper bounds with Preserve)
  1415.                     ReDim MultiD( 1 To 10, 15 To 20 )   ' 2 dimensions
  1416.                     ReDim Preserve MultiD( 1 To 10, 15 To 29 )
  1417.                         ' 2 dimensions, only the last upper bound
  1418.                         ' can be changed in a Multidimensional array
  1419.                         ' when using the Preserve keyword
  1420.  
  1421.  
  1422.   Huge Arrays
  1423.     Arrays whose total size exceeds 64K bytes are called huge arrays.
  1424.     You cannot create huge arrays of object variables or
  1425.     variable-length strings (fixed-length strings are allowed.)
  1426.     VB create huge arrays automatically when the array size exceeds
  1427.     64K bytes. The maximum size for a Huge Array is 64 MB in
  1428.     enhanced-mode Windows and 1 MB in standard-mode Windows.
  1429.  
  1430.   The maximum bounds for any array are -32,700 to 32,700 for each
  1431.   dimension.
  1432.  
  1433.   Use a dynamic array, instead of a fixed array, to conserve memory.
  1434.  
  1435.    *************** End of Arrays ********************
  1436.  
  1437.  
  1438.  
  1439.   Declaring an Object Variable
  1440.  
  1441.     {Dim | ReDim, | Static | Global} variableName  As [New]  objectType
  1442.         (The New can only be used with a specific Form variable.)
  1443.  
  1444.         example---  Dim FormVar1  As New frmMain   ' specific form
  1445.  
  1446.         example---  Dim FormVarSave As Form   ' generic form, no New
  1447.  
  1448.         example---  Dim SpecText1 As TextBox  ' but Not from a
  1449.                             ' specific Text Box
  1450.  
  1451.         examples---  Dim grdControl As Grid  ' declare Grid-type
  1452.                             ' control variable
  1453.  
  1454.                     Dim   House()    As Image
  1455.                     ReDim House(10)  As Image
  1456.  
  1457.         using Set Statements
  1458.             example---  Dim Bal As TextBox  ' general declaration
  1459.                           ' Bal has an initial value of Nothing
  1460.                         Set Bal = frmAccountDisplay!txtAccountsBalance
  1461.                                 ' to shorten Form!Control
  1462.                         If  Bal.Text < 0  Then
  1463.                             Bal.BackColor = 0
  1464.                             Bal.ForeColor = 255
  1465.                         End If
  1466.  
  1467.             example---  Set frmEnabledTime = Nothing   ' clear memory
  1468.                             ' of control variable  for global, module-
  1469.                             ' level, or static variables
  1470.  
  1471.         using Is operator
  1472.             {If | ElseIf} TypeOf object Is objecttype Then
  1473.             example---
  1474.                 Sub imgTool2_DragDrop (Source1 As Control, x As Single,
  1475.                     Y As Single)
  1476.                     If Source1 Is imgTool2  Then
  1477.                         MsgBox "Cannot drop control on itself."
  1478.                     Else
  1479.                         ' do something with dropped control
  1480.                     End If
  1481.                 End Sub
  1482.         using TypeOf operator  (cannot be used with Select Case)
  1483.             {If | ElseIf} TypeOf object Is objecttype Then
  1484.             example---  If TypeOf Source1 Is Image Then  . . .
  1485.  
  1486.  
  1487.   True or False
  1488.     Boolean properties have a value of -1 for True  and 0 for False.
  1489.     VB interprets any value other than -1 or 0 as True.
  1490.  
  1491.  
  1492.   Keys, special keys in working with VB 3.0 and 4.0
  1493.  
  1494.     [F8] = Single step
  1495.     [Shift][F8] = Procedure step
  1496.     [F9] = toggle Breakpoint
  1497.     [Ctrl] L = Calls dialog to show active procedures; must be in bread
  1498.                 mode
  1499.  
  1500.  
  1501.     ******************
  1502.   Special Dialog Boxes----    **********
  1503.  
  1504.     MsgBox( msg [,[type] [,title]] )
  1505.         a few Types---      Type    Meaning
  1506.                             0       Display OK button only
  1507.                             1       Display OK and Cancel buttons
  1508.                             4       Display Yes and No buttons
  1509.                             48      !   (in a circle)
  1510.                             64      i   (in a circle)
  1511.  
  1512.         Example---  Title1A = " Special Info "
  1513.             MsgBox( "This is an OK box", 0,  Title1A )
  1514.             MsgBox( "This is an OK box", 64, Title1A )
  1515.  
  1516.         Example---  Title1A = " Special Info "
  1517.             NL = Chr$(10) & Chr$(13)
  1518.             Msg = "The text in this file has changed."
  1519.             Msg = Msg & NL    ' end line of text and start a new line
  1520.             Msg = Msg & "Do you want to save the changes?"
  1521.             Response = "MsgBox( Msg, 51, Title1A )
  1522.             Select Case  Response
  1523.             Case 2
  1524.                 Cancel = True
  1525.             Case 6
  1526.                 ' Invoke the Save procedure.
  1527.                 FileSave
  1528.             Case 7
  1529.                 Cancel = False
  1530.             End Select
  1531.  
  1532.     InputBox (prompt [, [title]  [, [default] [,xpos, ypos]
  1533.           [,helpfile, context])
  1534.        Example---      Dim Answer, DefVal, Msg1, Title
  1535.          Msg1 = "Enter a value from 1 to 3"  ' set prompt
  1536.          Title = "InputBox Demo" ' set title
  1537.          DefVal = "1"                        ' set default
  1538.          Do
  1539.             Answer = InputBox( Msg1, Title, DefVal )  ' get user input
  1540.          Loop  Until Answer >= 1 And Answer <= 3
  1541.          MsgBox = "You entered " & Answer    ' display msg
  1542.  
  1543.         Template---
  1544.             Dim Answer, DefVal, Msg1, Title1
  1545.             Msg1 =   " "    ' set prompt
  1546.             Title1 = " "    ' set title
  1547.             DefVal = ""   ' set default
  1548.             Answer = InputBox( Msg1, Title, DefVal )  ' get user imput
  1549.             If  Answer = ""  Then
  1550.                 '
  1551.             Else
  1552.                 '
  1553.                 MsgBox  " ", 48, " "   ' msg, type (!), title
  1554.             End If
  1555.  
  1556.  
  1557.  
  1558.   GRAPHICS  ░░▒▒░▓
  1559.  
  1560.   Twips---  1,440 Twips = 1 (printed) inch;  567  twips = 1 cm
  1561.  
  1562.   When AutoRedraw is False (the default), place any graphics methods
  1563.   within the Paint event of the form or container.
  1564.  
  1565.   If you print to a form or picture box, it is usually best to print to
  1566.   the picture box.  (Use the Print method.)
  1567.  
  1568.  
  1569.   RGB function for color---
  1570.     RGB( red, green, blue )
  1571.     Color       Red value   Green value     Blue value
  1572.  
  1573.     black       0           0               0
  1574.     blue        0           0               255
  1575.     green       0           255             0
  1576.     cyan        0           255             255
  1577.     red         255         0               0
  1578.     yellow      255         255             0
  1579.     white       255         255             255
  1580.  
  1581.     Examples---   Form1.BackColor = RGB(0, 255, 0)  ' green background
  1582.         Form1.BackColor = RGB( RED )     ' RED = &HFF&
  1583.  
  1584.   Movement of Controls---
  1585.  
  1586.     Left and Top properties---
  1587.         Examples---   txtField1.Left = txtField1.Left + 200
  1588.             txtField1.Top = txtField1.Top + 500
  1589.  
  1590.   Delay---
  1591.   Example---   place this proc on the main form or in a code module
  1592.   Sub Delay ()
  1593.       Dim Start
  1594.       Dim Check
  1595.       Start = Timer
  1596.       Do Until Check >= Start + .15   ' Start time + .15 seconds
  1597.          Check = Timer   ' Timer function
  1598.       Loop
  1599.   End Sub
  1600.  
  1601.  
  1602.   File types  ********************************
  1603.  
  1604.     *.Frm       form file
  1605.     *.Frx       binary file that has data for a control on a form
  1606.                 of the same name  (example---  Loan1.frm  and
  1607.                 Loan1.frx)  Some controls have properties that have
  1608.                 binary data as their values, such as the Picture
  1609.                 property of a picture box and image properties of
  1610.                 certain customs controls.
  1611.  
  1612.  
  1613.    ***********************************
  1614.  
  1615.    OBJECTS  (special operations with Objects)
  1616.  
  1617.     To perform several operations on the same object, you can use the
  1618.     With...End With statement.
  1619.     Example---
  1620.         Private Sub Form_Load()
  1621.             With cmdProceed
  1622.                 .Caption = "OK"
  1623.                 .Visible = True
  1624.                 .Enabled = True
  1625.             End With
  1626.             . . .
  1627.         End Sub
  1628.  
  1629.     All controls have default properties.  For example, these two
  1630.     statements are equivalent:
  1631.         lblHeader1.Caption = "List of Past Due Accounts"
  1632.         lblHeader1 = "List of Past Due Accounts"
  1633.     You cannot access default properties this way when the object is
  1634.     stored in a Variant variable.
  1635.  
  1636.     You can use the Object Browser to display the classes available
  1637.     form object libraries and the procedures contained in your project.
  1638.     See  PP. 191-195  PG
  1639.  
  1640.     Using Object Variables---
  1641.         See  PP. 200-203  PG
  1642.         syntax---    {Dim |ReDim |Static |Private |Public}  variable As
  1643.                         [New] class
  1644.  
  1645.         Examples---
  1646.         Dim FormV1 As New frmMain  ' declare an object variable of type
  1647.                                    ' frmMain
  1648.         Dim anyForm As Form    ' generic form variable that can refer
  1649.                                ' to any form in the app.
  1650.  
  1651.         There are Specific object variables and Generic object
  1652.         variables.
  1653.  
  1654.         The major difference between the two is that forms can be
  1655.         visible objects, whereas class modules have no visible
  1656.         interface.
  1657.  
  1658.         For adding custom Methods and Properties to forms, see PP.
  1659.         203-204 in PG.
  1660.  
  1661.  
  1662.    ***********************************
  1663.  
  1664.       ░▒░▒▓▒
  1665.  
  1666.   DDE    Dynamic Data Exchange---  special section 
  1667.  
  1668.     The application that initiates the conversation is called the 
  1669.     destination application, or the destination.  The app. responding 
  1670.     to the destination is the source application, or the source. 
  1671.     In VB3, any text box, picture box, or label can be the destination 
  1672.     in a conversion.  Any form can be the source. 
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.    ***********************************
  1679.  
  1680.  
  1681.  
  1682.   PG = refers to a page in (VB 4) Programmer's Guide
  1683.   LR = refers to a page in (VB 4) Language Reference
  1684.  
  1685.